package com.zombieprogrammer.entradausuario;

import com.badlogic.gdx.scenes.scene2d.InputEvent;
import com.badlogic.gdx.scenes.scene2d.InputListener;
import com.zombieprogrammer.hub_visuales.Contenedor;
import com.zombieprogrammer.juego.Juego_Base;
import com.zombieprogrammer.juego.Randmonster;
import com.zombieprogrammer.pantallas.Pantalla_Seleccion;

public class InputRandmonster extends InputListener {

	// ATRIBUTOS

	private Randmonster rm;
	private float PPM;
	private float zoom;
	private Juego_Base juego_base;
	private Pantalla_Seleccion pantalla;
	private boolean seleccion;
	private boolean reserva;
	private Contenedor contenedor;

	// CONSTRUCTOR

	public InputRandmonster(Randmonster rm) {
		this.rm = rm;
		this.PPM = rm.getJuego().PPM;
		this.zoom = rm.getJuego().zoom;
		this.juego_base = rm.getJuego();
		this.pantalla = (Pantalla_Seleccion) this.juego_base
				.getPantalla_juego();

	}

	// METODOS

	@Override
	public boolean touchDown(InputEvent event, float x, float y, int pointer,
			int button) {
		// float rm_x = rm.getCuerpo().getBody().getPosition().x * PPM;
		// float rm_y = rm.getCuerpo().getBody().getPosition().y * PPM;

		Contenedor contenedor = null;

		if (seleccion) {
			if (reserva) {
				System.out.println("CONTENEDOR");
				rm.desplazar(50, 50);
				reserva = false;
				this.contenedor.setVacio(true);
				this.contenedor = null;

			}

			else {
				for (Contenedor c : this.pantalla.getContenedores()) {
					if (c.isVacio()) {
						contenedor = c;
						break;
					}
				}
			}

			if (contenedor != null) {
				contenedor.setVacio(false);
				contenedor.setRm(rm);
				float x_pos = (contenedor.getX() + (contenedor.getAncho() / 2))
						* zoom / PPM;
				float y_pos = (contenedor.getY() + (contenedor.getAlto() / 2))
						* zoom / PPM;
				rm.desplazar(x_pos, y_pos);
				this.contenedor = contenedor;
				reserva = true;
			}
		} else {

			rm.getJuego().hub.Analizar(rm);
			seleccion = true;
		}
		return true;

	}

	// GETTERS&SETTERS

	public boolean isSeleccion() {
		return seleccion;
	}

	public boolean isReserva() {
		return reserva;
	}

	public void setSeleccion(boolean seleccion) {
		this.seleccion = seleccion;
	}

	public void setReserva(boolean reserva) {
		this.reserva = reserva;
	}

}
